home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / modula2 / module / windowdi.def < prev    next >
Text File  |  1995-11-25  |  8KB  |  116 lines

  1. (******************************************************************************)
  2. (*      This MODULE is Public Domain. Copy me like a beast!                   *)
  3. (*               Christian Ledermann                                          *)
  4. (*               Wölfelkofen 2                                                *)
  5. (*               84166 Adlkofen                                               *)
  6. (******************************************************************************)
  7. (*                                                                            *)
  8. (* Started:   20.12.92     03:54:30                                           *)
  9. (* Version:   20.01.94     04:12:54                                           *)
  10. (*                                                                            *)
  11. (******************************************************************************)
  12. (*                                                                            *)
  13. (* Diese Software ist ohne jede Garantie. Ich verspreche                      *)
  14. (* keinerlei Wartung und übernehme keine Verantwortung für Schäden die        *)
  15. (* durch die Benutzung dieses Programmes entstehen.                           *)
  16. (* Jegliche Ersatzansprüche lehne ich ab.                                     *)
  17. (*                                                                            *)
  18. (******************************************************************************)
  19. DEFINITION MODULE WindowDialogue;
  20. FROM SYSTEM IMPORT ADDRESS;
  21.  
  22. (*********************************************************************)
  23. (* Ein Artikel in ST-Computer 5/93 war die Anregeung für dieses MODUL*)
  24. (* Im Gegensatz zum Vorbild ist es allerdings flexibler und kann so  *)
  25. (* einfacher in eigene Programme eingebunden werden.                 *)
  26. (*********************************************************************)
  27.  
  28. PROCEDURE OpenWindowDial(TreePtr : ADDRESS; Title : ARRAY OF CHAR):INTEGER;
  29. (********* Erzeugen, Öffnen und Zeichnen eines Fensterdialogs ********)
  30. (* TreePtr : Adresse des Dialoges, zu ermitteln mit                  *)
  31. (* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse)                 *)
  32. (* Titel : Titelzeile des Fensters unter MultiTOS etc. am besten der *)
  33. (* Name des Programmes zu dem der Dialog gehört.                     *)
  34. (* Rückgabe : Nummer (AES-Handle) des Fensters.                      *)
  35. (* Greift intern auf CreateDialWindow,openDialWindow zurück          *)
  36. (*********************************************************************)
  37.  
  38. PROCEDURE DoWindowDial(ID, Window : INTEGER;TreePtr : ADDRESS; FirstObject :INTEGER):INTEGER;
  39. (********** nicht modale Dialog Box ausführen*************************)
  40. (* ID : ID des aufrufenden Programmes, dies ist der Rückgabewert von *)
  41. (* AppInitialize.                                                    *)
  42. (* Window : Nummer des Fensters, wird von OpenWindowDial bzw Create- *)
  43. (* DialWindow zurückgegeben.                                         *)
  44. (* Wenn hier -1 übergeben wird d.h. es konnte kein Fenster erzeugt   *)
  45. (* werden wir ein "normaler" modaler Move-Dialog ausgeführt.         *)
  46. (* TreePtr : Adresse des Dialoges, zu ermitteln mit                  *)
  47. (* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse)                 *)
  48. (* NummerDerBox ist Vom RCS erzeugt worden und Steht in der .I -Datei*)
  49. (* FirstObject : Erstes Editierbares Object, dort steht dann der     *)
  50. (* Cursor im Edit Feld, wenn kein EditObject vorhanden ist dann muß  *)
  51. (* hier 0 übergeben werden.                                          *)
  52. (* Rückgabe : Das Feld das zum Verlassen der Box angeklickt wurde.   *)
  53. (* Wenn der Dialog aus anderen Gründen verlassen wurde zB. weil ein  *)
  54. (* WindowEvent auftrat o.ä. wird 0 zurückgegeben.                    *)
  55. (* Achtung!!! Wenn das Dialog-Fenster verschoben wird muss ein Redraw*)
  56. (* erzwungen werden bevor die Dialogbox wieder aktiviert wird sonst  *)
  57. (* erkennt das GEM nicht die geänderten Koordinaten d.h. es vermutet *)
  58. (* die Buttons und EditFelder an der Stelle an der sich der Dialog   *)
  59. (* vorher befand -> Bildschirmmüll durch die Editfelder und          *)
  60. (* Blindflug zum bedienen der Buttons.                               *)
  61. (* Der Dialog kann wie gewöhnlich im RCS erzeugt werden !!!          *)
  62. (* Als Schmankerln sind hier noch ein paar Erweiterungen eingebaut   *)
  63. (* 1.) Tastatursteuerung: wird Alt+Taste gedrückt so wird der Button *)
  64. (* im Dialogbaum ausgeführt der als letztes(!) diese Taste in Groß-  *)
  65. (* buchstaben enthält. Dabei ist es gleichgültig ob der Buttontext   *)
  66. (* noch andere Großbuchstaben enthält. OK reagiert also auf Alt-O    *)
  67. (* und(!) auf Alt-K.                                                 *)
  68. (* 2.) Checkboxes: Ein Object vom Typ GBox das die Hintergrundfarbe  *)
  69. (* schwarz hat und den Status crossed besitzt wird a) beim Aufruf    *)
  70. (* von DoMoveDialog invertiert so das es nun eine weiße Box mit      *)
  71. (* schwarzem Kreuz ist und b) wenn es im Dialog angeklickt wird mit  *)
  72. (* dem Status Checked+Selected belegt -> weiße Box                   *)
  73. (* 3.) Wenn es kein DEFAULT-Object gibt wird mit ENTER bzw. RETURN   *)
  74. (* der nächste editierbare Eintrag angesprungen.                     *)
  75. (*********************************************************************)
  76.  
  77. PROCEDURE CloseWindowDial(VAR Window : INTEGER);
  78. (****** Fenster-Dialog schließen und Fenster freigeben (löschen)******)
  79. (* Window : AES-Fenster-Handle, wird als Rückgabe auf -1 gesetzt     *)
  80. (* Greift intern auf CloseDialWindow,DeleteDialWindow zurück         *)
  81. (*********************************************************************)
  82.  
  83. PROCEDURE CreateDialWindow(TreePtr : ADDRESS; Title : ARRAY OF CHAR):INTEGER;
  84. (***********Erzeugt ein Dialog Fenster *******************************)
  85. (* TreePtr : Adresse des Dialoges, zu ermitteln mit                  *)
  86. (* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse)                 *)
  87. (* Titel : Titelzeile des Fensters unter MultiTOS etc. am besten der *)
  88. (* Name des Programmes zu dem der Dialog gehört.                     *)
  89. (* Rückgabe : Nummer (AES-Handle) des Fensters.                      *)
  90. (* Alle nötigen Strukturen für die verwaltung des Fensters werden    *)
  91. (* erzeugt: Fenster, Redraw-PROCEDURE...                             *)
  92. (* Der Dialog wir mittels ObjectCenter in der Bildschirmmitte        *)
  93. (* angeordnet.                                                       *)
  94. (*********************************************************************)
  95.  
  96. PROCEDURE OpenDialWindow(Window : INTEGER):BOOLEAN;
  97. (****************** Öffnen des Dialog-Fensters.***********************)
  98. (* Window : AES-Fenster-Handle                                       *)
  99. (* Rückgabe TRUE falls es erfolgreich geöffnet worden ist            *)
  100. (* Das Fenster öffnet sich an der Stelle, wo es zuletzt war.         *)
  101. (* Um den Dialog zu zeichnen muss hier noch ein Redraw erzwungen     *)
  102. (* werden                                                            *)
  103. (*********************************************************************)
  104.  
  105. PROCEDURE CloseDialWindow(Window : INTEGER);
  106. (*********** Schliessen des Dialog-Fensters***************************)
  107. (* Window : AES-Fenster-Handle                                       *)
  108. (*********************************************************************)
  109.  
  110. PROCEDURE DeleteDialWindow(VAR Window : INTEGER);
  111. (*************** Dialog-Fenster freigeben (löschen)*******************)
  112. (* Window : AES-Fenster-Handle, wird als Rückgabe auf -1 gesetzt     *)
  113. (*********************************************************************)
  114.  
  115. END  WindowDialogue.
  116.